package com.expert.miniapp.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * DemandMapper - 需求数据访问接口
 *
 * @author System
 * @since 2025-10-19
 */
@Mapper
public interface DemandMapper {

    /**
     * 插入新需求
     *
     * @param demand 需求实体对象
     * @return 影响的行数
     */
    int insertDemand(Demand demand);

    /**
     * 更新需求信息（动态更新，只更新非空字段）
     *
     * @param demand 需求实体对象
     * @return 影响的行数
     */
    int updateDemand(Demand demand);

    /**
     * 根据需求ID查询需求详情
     *
     * @param demandId 需求ID
     * @return 需求实体对象
     */
    Demand selectByPrimaryKey(@Param("demandId") String demandId);

    /**
     * 根据用户ID查询需求列表
     *
     * @param userId 用户ID
     * @return 需求实体列表
     */
    List<Demand> selectByUserId(@Param("userId") String userId);

    /**
     * 查询所有需求
     *
     * @return 需求实体列表
     */
    List<Demand> selectAll();

    /**
     * 更新需求状态
     *
     * @param demandId 需求ID
     * @param status   新状态
     * @return 影响的行数
     */
    int updateDemandStatus(@Param("demandId") String demandId, @Param("status") String status);

    /**
     * 根据需求ID删除需求
     *
     * @param demandId 需求ID
     * @return 影响的行数
     */
    int deleteByPrimaryKey(@Param("demandId") String demandId);
}
